modf関数は、指定された浮動小数点実数を整数と小数に変換した値を求めます。
#include <math.h>
double modf(double x, double *iptr);
xは浮動小数点実数の値を指定します。
*iptrは変換した整数部分の値を格納する変数のアドレスを指定します。
戻り値として、小数部分の値を返します。
modf関数は、引数xを整数部分と小数部分に分割しますが、この2つの値は共にxと同じ符号を持っています。また、小数部分は戻り値として返り、整数部分は iptrに格納されます。
プログラム 例
#include <stdio.h> #include <math.h> int main(void) { int loop_cnt; double x; double iptr; double f; for (loop_cnt = 1; loop_cnt <= 5; ++loop_cnt) { printf('実数の値を入力してください ==> '); scanf('%lf', &x); f = modf(x, &iptr); printf('%f = %f + %f\n', x, f, iptr); } return 0; }
例の実行結果
$ ./modf.exe 実数の値を入力してください ==> 1.23 1.230000 = 0.230000 + 1.000000 実数の値を入力してください ==> -1.23 -1.230000 = -0.230000 + -1.000000 実数の値を入力してください ==> 123.456 123.456000 = 0.456000 + 123.000000 実数の値を入力してください ==> 0.123 0.123000 = 0.123000 + 0.000000 実数の値を入力してください ==> -0.123 -0.123000 = -0.123000 + -0.000000 $